package es.cea.agendatelefonica;


import java.io.IOException;
import java.util.ArrayList;
import java.util.List;

import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
import javax.persistence.EntityTransaction;
import javax.persistence.Query;
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServletRequest;

public class FiltroLogin implements Filter {

 
    public FiltroLogin() {
        
    }

	public void destroy() {
		
	}

	
	public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
		
		HttpServletRequest req=(HttpServletRequest) request;
		
		EntityManagerFactory entityManagerFactory = (EntityManagerFactory) req.getSession().getServletContext().getAttribute("emf");
		EntityManager entityManager = entityManagerFactory.createEntityManager();
		EntityTransaction transaction = entityManager.getTransaction();
		
		// Obtengo la lista de usuarios
		
		transaction.begin();
		String jpql = "select usuario from Usuario usuario";
		List<Usuario> usuarios = (List<Usuario>) entityManager.createQuery(jpql).getResultList();
		transaction.commit();
		
		// Creo objeto con los usuario que intenta logear
		Usuario login = new Usuario();
		login.setNombre(req.getParameter("nombre"));
		login.setClave(req.getParameter("clave"));
		List nueva=new ArrayList();
		nueva.addAll(usuarios);
		if (nueva.contains(login)){
			System.out.println(login.nombre + "\t"+ login.clave);
//			req.getRequestDispatcher("./agenda").forward(request, response);
		} else {
			System.out.println("pasa por aqui");
//			chain.doFilter(request, response);
//			req.getRequestDispatcher("./agenda").forward(request, response);
		}
	}

	
	public void init(FilterConfig fConfig) throws ServletException {

	}

}
